package com.aaa.backsystem.util;


import com.aaa.backsystem.entity.Dept;
import com.aaa.backsystem.entity.LayUiTree;
import com.aaa.backsystem.entity.Menu;
import com.aaa.backsystem.entity.TreeNode;

import java.util.ArrayList;
import java.util.List;

/**
 * fileName:TreeUtil
 * description:
 * author:gyc
 * createTime:2020/7/21 13:00
 * version:1.0.0
 */
public class DeptUtil {
    /**
     * 将List<Dept>换成 List<LayUiTree>
     * @param deptList
     * @return
     */
    public static List<LayUiTree> fromMenuListToTreeList(List<Dept> deptList){
        List<LayUiTree>   treeList = new ArrayList<>();
        //遍历所有的menu对象，然后发现menu对象有孩子，就继续便利孩子，递归操作
        for (Dept dept : deptList) {
            //如果父亲的id为0，就说明是一级目录
            if(dept.getParentId()==0){
                //将menu转成tree对象
                LayUiTree tree=fromMenuToTree(dept);
                //找自己的孩子,给tree对象设置孩子children
                LayUiTree treeChilren = setTreeChilren(tree, deptList);
                treeList.add(treeChilren);
            }
        }
        return treeList;
    }


    /**
     * 找自己的孩子,给tree对象设置孩子children
     * @param tree
     * @param deptList
     * @return
     */
    public static LayUiTree setTreeChilren(LayUiTree tree, List<Dept> deptList){
        //此集合封装所有的孩子
        List<LayUiTree> children = new ArrayList<>();
        for (Dept dept : deptList) {
            //tree的id是他所有孩子的父亲id
            if(dept.getParentId()==tree.getId())
            {
                //将menu转成tree对象
                LayUiTree layUiTree=fromMenuToTree(dept);
                //递归设置自己的孩子
                children.add(layUiTree);
            }
        }
        tree.setChildren(children);
        return tree;
    }

    /**
     * 将menu转成tree对象
     * @param dept
     * @return
     */
    public static LayUiTree  fromMenuToTree(Dept dept){
        LayUiTree layUiTree = new LayUiTree();
        layUiTree.setId(dept.getDeptId());
        layUiTree.setTitle(dept.getDeptName());
        return layUiTree;
    }
}
